import { addTodos, getTodos, updateTodo, deleteTodo, changDone, getDoneLength, delAllDoneTodo } from '../http/httpFunction'

function getToken() {
    return sessionStorage.getItem('token')
}

export default {
    namespaced: true,
    actions: {
        // 添加todo
        async addTodo(content, val) {
            if (val.todo === '') {
                content.commit('CHANGTipMSG', '添加事项不可为空')
                return
            }
            else {
                const result = await addTodos(getToken(), val.todo, val.done)
                content.commit('CHANGTipMSG', result.data.msg)
            }
        },

        // 获取数据
        async getTodo(content, val) {
            const result = await getTodos(getToken())
            content.commit('GETTODO', result.data.data)
        },

        // 修改title
        async updateTodo(content, val) {
            const result = await updateTodo(getToken(), val._id, val.title)
            console.log(result.data)
        },

        // 删除todo
        async deleteTodo(content, val) {
            if (getToken() === "") {
                content.commit('CHANGTipMSG', '未登陆，请登陆后操作')
            }
            else {
                const result = await deleteTodo(getToken(), val._id)
                content.commit('CHANGTipMSG', result.data.msg)
            }

        },

        // 修改done值
        async changDone(content, val) {
            const result = await changDone(getToken(), val._id, val.done)
        },

        // 获取已完成的todos和长度
        async getDoneLength(content) {
            const result = await getDoneLength(getToken())
            content.commit('GETDONELIST', result.data.data)
        },

    },
    mutations: {
        // 修改提示框信息
        CHANGTipMSG(state, val) {
            state.tipMsg = val
            state.tipIsShow = true
            setTimeout(() => {
                state.tipMsg = ''
                state.tipIsShow = false
            }, 1000)
        },

        // 保存初始数据
        GETTODO(state, val) {
            state.todos = val
        },

        GETDONELIST(state, val) {
            if (val.doneTodos) {
                state.doneTodos = val.doneTodos
            } else {
                state.doneTodos = []
            }

        }
    },
    state: {
        tipMsg: "",
        tipIsShow: false,
        todos: [],
        doneTodos: [],
        doneTodsLength: 0
    }
}